package com.aims.server.service.convert;

import com.aims.api.dto.AccountDTO;
import com.aims.api.entity.Account;
import org.springframework.beans.BeanUtils;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

/**
 * 账户对象转换器
 *
 * @author Generator
 * @since 2025-10-22
 */
public class AccountConverter {

    /**
     * Entity 转 DTO
     *
     * @param entity 实体对象
     * @return DTO对象
     */
    public static AccountDTO toDTO(Account entity) {
        if (entity == null) {
            return null;
        }

        AccountDTO dto = new AccountDTO();
        BeanUtils.copyProperties(entity, dto);
        return dto;
    }

    /**
     * DTO 转 Entity
     *
     * @param dto DTO对象
     * @return 实体对象
     */
    public static Account toEntity(AccountDTO dto) {
        if (dto == null) {
            return null;
        }

        Account entity = new Account();
        BeanUtils.copyProperties(dto, entity);
        return entity;
    }

    /**
     * Entity 列表转 DTO 列表
     *
     * @param entities 实体列表
     * @return DTO列表
     */
    public static List<AccountDTO> toDTOList(List<Account> entities) {
        if (entities == null || entities.isEmpty()) {
            return Collections.emptyList();
        }

        List<AccountDTO> dtoList = new ArrayList<>(entities.size());
        for (Account entity : entities) {
            dtoList.add(toDTO(entity));
        }
        return dtoList;
    }

    /**
     * DTO 列表转 Entity 列表
     *
     * @param dtos DTO列表
     * @return 实体列表
     */
    public static List<Account> toEntityList(List<AccountDTO> dtos) {
        if (dtos == null || dtos.isEmpty()) {
            return Collections.emptyList();
        }

        List<Account> entityList = new ArrayList<>(dtos.size());
        for (AccountDTO dto : dtos) {
            entityList.add(toEntity(dto));
        }
        return entityList;
    }
}